#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import error
import anasin
import analex
import flujo_entrada

import sys

linea = sys.stdin.readline()

while linea != "":
    flujo = flujo_entrada.cadena(linea)
    lex = analex.analizador_lexico(flujo)
    print "Operacion: %s" % linea
    
    try:
        sintactico = anasin.analizador_sintactico(lex)
        arbol = sintactico.Linea()
        if str(arbol) != "None":
            print "Resultado %s \n" % str(arbol.evalua())
            print "El AST es: \n %s \n\n" % str(arbol.imprimeAST(0))
        else:
            print "Árbol vacío"
        
        linea = sys.stdin.readline()
    except error.Error, err:
        sys.stderr.write("%s\n" % err)
        linea = sys.stdin.readline()
        

            